ImageGear Professional for Linux
How to Configure

ImageGear handles all of the memory mapped file operations internally, except for a specific case discussed in the next section. The application only needs to set a few parameters to enable the usage of memory mapped files and adjust it to its needs.

The usage of memory mapped files is controlled by three global control parameters:

For best performance, use a separate SSD drive or hard drive for storing memory mapped files, and make sure that the operating system and other applications do not use this drive.

All three parameters DIB.FILE_MAPPING.THRESHOLD, DIB.FILE_MAPPING.PATH and DIB.FILE_MAPPING.FLUSH_SIZE are taken into account at the time of the DIB creation. After the DIB has been created, changing these parameters will not have an effect on the storage of this DIB, or flush frequency during its processing. However, if some operation replaces the DIB in a HIGEAR (e.g., Resize, Rotate), a new DIB will be created according to the current DIB.FILE_MAPPING.THRESHOLD and DIB.FILE_MAPPING.PATH values, and will then be processed according to the DIB.FILE_MAPPING.FLUSH_SIZE value at the time of the DIB replacement.

The following example tells ImageGear to use memory mapped files for images whose pixel data size is equal to or greater than 500 MB:

 
Copy Code
// Memory mapping will be used for DIBs with sizes equal to or greater than 500 Mb.
AT_INT fileMappingThreshold = 500;
IG_gctrl_item_set("DIB.FILE_MAPPING.THRESHOLD", AM_TID_INT, &fileMappingThreshold, sizeof(fileMappingThreshold), "");

The following example obtains the current value of the DIB.FILE_MAPPING.THRESHOLD parameter:

 
Copy Code
// Get memory mapping threshold
AT_INT fileMappingThreshold;
IG_gctrl_item_get("DIB.FILE_MAPPING.THRESHOLD", NULL, (LPVOID)&fileMappingThreshold, sizeof(fileMappingThreshold), NULL, NULL, 0, NULL);

The following example tells ImageGear to create temporary memory-mapped files in the current directory:

 
Copy Code
// Use current directory for the memory mapped files
char* szMemoryMappingPath = ".";
IG_gctrl_item_set("DIB.FILE_MAPPING.PATH", AM_TID_MAKELP(AM_TID_CHAR), szMemoryMappingPath, (DWORD)strlen(szMemoryMappingPath) + 1, "");

The following example obtains the directory used for storing memory mapped files:

 
Copy Code
// Get path for memory mapped files
char szMemoryMappingPath[_MAX_PATH];
IG_gctrl_item_get("DIB.FILE_MAPPING.PATH", NULL, (LPVOID)&szMemoryMappingPath, sizeof(szMemoryMappingPath) - 1, NULL, NULL, 0, NULL);

The following example tells ImageGear to set the flush size to 100 Mb:

 
Copy Code
// Memory mapping flush size will be equal to 200 Mb.
AT_INT fileMappingFlushSize = 200;
IG_gctrl_item_set("DIB.FILE_MAPPING.FLUSH_SIZE", AM_TID_INT, &fileMappingFlushSize, sizeof(fileMappingFlushSize), "");

The following example obtains the current flush size:

 
Copy Code
// Get memory mapping flush size
AT_INT fileMappingFlushSize;
IG_gctrl_item_get("DIB.FILE_MAPPING.FLUSH_SIZE", NULL, (LPVOID)&fileMappingFlushSize, sizeof(fileMappingFlushSize), NULL, NULL, 0, NULL);

 

 


©2016. Accusoft Corporation. All Rights Reserved.

Send Feedback